home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / plain C OS8 / Everything / ModalText.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-10-29  |  4.9 KB  |  191 lines  |  [TEXT/CWIE]

  1. /* ModalText.c -- Modal dialog */
  2.  
  3. #include <Types.h>
  4. #include <Quickdraw.h>
  5. #include <Controls.h>
  6. #include <Dialogs.h>
  7. #include <Events.h>
  8. #include <Lists.h>
  9. #include <Menus.h>
  10. #include <TextEdit.h>
  11. #include <Appearance.h>
  12. #include <stdlib.h>
  13.  
  14. #include "ResourceDefs.h"
  15. #include "Miscellany.h"
  16. #include "ControlUtils.h"
  17.  
  18. #include "Dispatcher.h"
  19. #include "ModalText.h"
  20.  
  21. #define kOKButton        1
  22. #define kSmallField        2
  23. #define kLargeField        3
  24. #define kX12345Field        4
  25. #define kX12345e6Field        5
  26. #define kPasswordField        6
  27. #define kDateField        7
  28. #define kTimeField        8
  29. #define kStyledField        9
  30.  
  31.  
  32. /*----------*/
  33. Boolean        GetModalText (
  34.     DModalTextData*        ioData)
  35. {
  36.     Boolean            result = false;
  37.     ModalText*        dialog = NewModalText ();
  38.  
  39.     result = AMDialog_RunModal ((AMDialog*)dialog, DLOG_ModalText, (AMSignaler*)ioData);
  40.  
  41.     DeleteModalText (dialog);
  42.  
  43.     return result;
  44. }
  45.  
  46. //----------
  47. ModalText*        NewModalText ()
  48. {
  49.     ModalText*        dialog;
  50.  
  51.     dialog = (ModalText*)malloc (sizeof (ModalText));
  52.     ModalText_Init (dialog);
  53.     SetClassID (dialog, classModalText);
  54.  
  55.     return dialog;
  56. }
  57.  
  58. //----------
  59. void    DeleteModalText (
  60.     ModalText*        dialog)
  61. {
  62.     ModalText_Free (dialog);
  63.     free (dialog);
  64. }
  65.  
  66. //----------
  67. void    ModalText_Init (
  68.     ModalText*        self)
  69. {
  70.     AMDialog_Init ((AMDialog*)self);
  71. }
  72.  
  73. //----------
  74. void    ModalText_Free (
  75.     ModalText*        self)
  76. {
  77.     AMDialog_Free ((AMDialog*)self);
  78. }
  79.  
  80. //----------
  81. void    ModalText_FinishMake (
  82.     ModalText*        self)
  83. {
  84.     self->mOKHandle = AMDialog_GetControlItem ((AMDialog*)self, kOKButton);
  85.     SetDefaultState (self->mOKHandle, true);
  86.     SetDialogDefaultItem (((AMDialog*)self)->mDialog, kOKButton);
  87.     self->mSmallHandle = AMDialog_GetControlItem ((AMDialog*)self, kSmallField);
  88.     self->mLargeHandle = AMDialog_GetControlItem ((AMDialog*)self, kLargeField);
  89.     self->mX12345Handle = AMDialog_GetControlItem ((AMDialog*)self, kX12345Field);
  90.     self->mX12345e6Handle = AMDialog_GetControlItem ((AMDialog*)self, kX12345e6Field);
  91.     self->mPasswordHandle = AMDialog_GetControlItem ((AMDialog*)self, kPasswordField);
  92.     self->mDateHandle = AMDialog_GetControlItem ((AMDialog*)self, kDateField);
  93.     self->mTimeHandle = AMDialog_GetControlItem ((AMDialog*)self, kTimeField);
  94.     self->mStyledHandle = AMDialog_GetControlItem ((AMDialog*)self, kStyledField);
  95. }
  96.  
  97. //----------
  98. void    ModalText_ConnectToData (
  99.     ModalText*        self,
  100.     AMSignaler*        inData)
  101. {
  102.     AMDialog_ConnectToData ((AMDialog*)self, inData);
  103.     self->mData = (DModalTextData*) inData;
  104.  
  105.     SetControlTextStr (self->mSmallHandle, GetSmall2 (self->mData));
  106.     SetControlTextStr (self->mLargeHandle, GetLarge2 (self->mData));
  107.     SetControlTextValue (self->mX12345Handle, GetX12346 (self->mData));
  108.     SetControlTextFloat (self->mX12345e6Handle, GetX12345e7 (self->mData));
  109.     SetControlTextStr (self->mPasswordHandle, GetPassword2 (self->mData));
  110.     SetClockDateTime (self->mDateHandle, GetDate2 (self->mData));
  111.     SetClockDateTime (self->mTimeHandle, GetTime2 (self->mData));
  112.     SetControlTextStr (self->mStyledHandle, GetStyled2 (self->mData));
  113. }
  114.  
  115. //----------
  116. void    ModalText_DoItem (
  117.     ModalText*        self,
  118.     SInt16        inItemHit)
  119. {
  120.     switch (inItemHit) {
  121.     case kOKButton:
  122.             AMDialog_SetResult ((AMDialog*)self, true);
  123.         break;
  124.     case kSmallField:
  125.             SetSmall2Handle (self->mData, GetEditTextChars (self->mSmallHandle));
  126.         break;
  127.     case kLargeField:
  128.             SetLarge2Handle (self->mData, GetEditTextChars (self->mLargeHandle));
  129.         break;
  130.     case kX12345Field:
  131.             SetX12346 (self->mData, GetControlTextValue (self->mX12345Handle));
  132.         break;
  133.     case kX12345e6Field:
  134.             SetX12345e7 (self->mData, GetControlTextFloat (self->mX12345e6Handle));
  135.         break;
  136.     case kPasswordField:
  137.             SetPassword2Handle (self->mData, GetEditTextChars (self->mPasswordHandle));
  138.         break;
  139.     case kDateField:
  140.             SetDate2 (self->mData, GetClockDateTime (self->mDateHandle));
  141.         break;
  142.     case kTimeField:
  143.             SetTime2 (self->mData, GetClockDateTime (self->mTimeHandle));
  144.         break;
  145.     case kStyledField:
  146.             SetStyled2Handle (self->mData, GetEditTextChars (self->mStyledHandle));
  147.         break;
  148.  
  149.     } // switch
  150. }
  151.  
  152. //----------
  153. void    ModalText_DataChanged (
  154.     ModalText*        self,
  155.     long        inDataID)
  156. {
  157.     if (inDataID == idSmall2) {
  158.         SetControlTextStr (self->mSmallHandle, GetSmall2 (self->mData));
  159.     }
  160.     if (inDataID == idLarge2) {
  161.         SetControlTextStr (self->mLargeHandle, GetLarge2 (self->mData));
  162.     }
  163.     if (inDataID == idX12346) {
  164.         SetControlTextValue (self->mX12345Handle, GetX12346 (self->mData));
  165.     }
  166.     if (inDataID == idX12345e7) {
  167.         SetControlTextFloat (self->mX12345e6Handle, GetX12345e7 (self->mData));
  168.     }
  169.     if (inDataID == idPassword2) {
  170.         SetControlTextStr (self->mPasswordHandle, GetPassword2 (self->mData));
  171.     }
  172.     if (inDataID == idDate2) {
  173.         SetClockDateTime (self->mDateHandle, GetDate2 (self->mData));
  174.     }
  175.     if (inDataID == idTime2) {
  176.         SetClockDateTime (self->mTimeHandle, GetTime2 (self->mData));
  177.     }
  178.     if (inDataID == idStyled2) {
  179.         SetControlTextStr (self->mStyledHandle, GetStyled2 (self->mData));
  180.     }
  181. }
  182.  
  183. //----------
  184. Boolean        ModalText_Filter (
  185.     ModalText*            self,
  186.     EventRecord            *ioEvent,
  187.     DialogItemIndex        *outItemHit)
  188. {
  189.     return AMDialog_Filter ((AMDialog*)self, ioEvent, outItemHit);
  190. }
  191.